﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace HelloWPF.DependencyProperty.Models
{
    /// <summary>
    /// 依赖属性宿主-依赖对象
    /// </summary>
    public class Student:DependencyObject
    {
        public Student()
        {

        }

        /// <summary>
        /// CLR属性包装器
        /// 包装器的作用是以“实例属性”的形式向外界暴露依赖属性，
        /// 这样依赖属性才能成为数据源的一个Path
        /// </summary>
        public string Name
        {
            get
            {
                return (string)GetValue(NameProperty);
            }
            set
            {
                SetValue(NameProperty, value);
            }
        }

        /// <summary>
        ///  依赖属性
        ///  1.所属对象必须是依赖对象
        /// 2.必须是静态+Readonly
        /// 3.不是通过new，通过注册完成定义
        /// Name:CLR属性名
        /// typeof(string):CLR属性类型
        ///  typeof(Student):依赖属性所有者类型
        /// </summary>
        public static readonly System.Windows.DependencyProperty NameProperty =
            System.Windows.DependencyProperty.Register("Name", typeof(string), typeof(Student), new PropertyMetadata(""));
    }
}
